import StorageTools from '../tools/StorageTools'
import { Message } from 'element-ui'
export default function axiosConfig(axios,vue){
    // 全部使用api前缀
    let baseUrl = process.env.NODE_ENV === 'development' ? '/api' : '/api'
// 请求拦截器
    axios.interceptors.request.use(
        config => {
            if (!config.headers.Authorization && StorageTools.sessionGet('Authorization')) { // 判断是否存在token，如果存在的话，则每个http header都加上token
                config.headers.Authorization = StorageTools.sessionGet('Authorization')  //请求头加上token
            }
            // 添加一个用户id请求头，主要是本地开发环境内存不足，和服务器共用其它模块，根据这个请求头实现灰度路由，以达到访问本地的目的
            // 如果不需要删除即可
            if (!config.headers.userId && StorageTools.sessionGet('userId')) {
                config.headers.userId = StorageTools.sessionGet('userId')
            }
            return config
        },
        err => {
            return Promise.reject(err)
        })
// 添加响应拦截器
    axios.interceptors.response.use(function (response) {
        // 对响应数据做点什么
        return response
    }, function (error) {
        // 对响应错误做点什么
        if (!error.response) {
            //Message.error('网络异常请检查服务请求是否正常，或这是一个bug，请联系管理员')
            // todo 记录异常信息到后台方便定位问题
            //return
        }else {
            if(error.response.data){
                let responseData = error.response.data
                if(typeof responseData == 'string'){
                    // 开发的时候代理不到后台，说明后台服务不可用
                    if(responseData.indexOf('Proxy error:') >=0){
                        Message.error('网络错误或服务不可用，请联系管理员')
                    }
                }

            }
        }
        return Promise.reject(error)
    })
    vue.prototype.$baseURL = {
        base: baseUrl + '/grape-base',
        auth: baseUrl + '/grape-auth',
        file: baseUrl + '/grape-file',
        attend: baseUrl + '/grape-attend',
        workflow: baseUrl + '/grape-workflow',
        wx: baseUrl + '/grape-wx',
        composite: baseUrl + '/grape-composite',
        sequence: baseUrl + '/grape-sequence',
    }
    // 兼容一下后台单机运行，下面两种判断，同时支持了环境变量和运行时动态设置
    if(window.portalOneBackend || process.env.VUE_APP_PORTALONEBACKEND == 'true'){
        for(let key in vue.prototype.$baseURL){
            vue.prototype.$baseURL[key] = baseUrl
        }
    }
}
